/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.ventasInternet.beans;

import com.ventasInternet.Delegate.DelegateVentasInternet;
import com.ventasInternet.entity.Cliente;
import com.ventasInternet.entity.Usuario;
import com.ventasInternet.utils.ManejadorMensajes;
import java.io.IOException;
import java.io.Serializable;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.bean.ViewScoped;
import javax.faces.context.ExternalContext;
import javax.faces.context.FacesContext;
import javax.inject.Named;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import org.hibernate.validator.constraints.NotBlank;
import org.primefaces.context.RequestContext;

/**
 *
 * @author DESARO03
 */
@ManagedBean(name="gestionClientesBean")
@SessionScoped
public class GestionClientesBean implements Serializable {
    
    @NotNull
    @NotBlank
    @Size(min = 5, max = 10)
    private String passClienteEQ;
    @NotNull
    @NotBlank
    @Size(min = 5, max = 10)
    private String passClienteEQ1;
    
    
    private Usuario usuario;
    private Cliente cliente;
    
    private Boolean estadoDatClient;
    private int estadoNME;
    
    /** Creates a new instance of GestionClientesBean */
    public GestionClientesBean() {
        this.usuario= new Usuario();
        this.estadoDatClient = false;
       
    }

    public Cliente getCliente() {
        if(cliente==null)
            cliente = new Cliente();
        return cliente;
    }

    public void setCliente(Cliente cliente) {
        this.cliente = cliente;
    }

    public Usuario getUsuario() {
        if(this.usuario ==null){
            this.usuario = new Usuario();
        }
        return usuario;
    }

    public void setUsuario(Usuario usuario) {
        this.usuario = usuario;
    }

    public String getPassClienteEQ() {
        return passClienteEQ;
    }

    public void setPassClienteEQ(String passClienteEQ) {
        this.passClienteEQ = passClienteEQ;
    }

    public String getPassClienteEQ1() {
        return passClienteEQ1;
    }

    public void setPassClienteEQ1(String passClienteEQ1) {
        this.passClienteEQ1 = passClienteEQ1;
    }

    public Boolean getEstadoDatClient() {
        return estadoDatClient;
    }

    public void setEstadoDatClient(Boolean estadoDatClient) {
        this.estadoDatClient = estadoDatClient;
    }
    
    
    
    
    
    /**
     * ******************************** Metodos ********************************
     */
    private void guardarCliente(){
        DelegateVentasInternet.getInstance().registrarClienteDL(this.usuario, this.cliente);
    }
   public void mensajeCompararPassw(){
       ManejadorMensajes.showMessageWarning(null, "Las contraseñas deben de ser iguales..");
   }
   public void mostrarPanelCliente(){
       this.setEstadoDatClient(true);
       
   }
   public void setupNuevo(){
        this.estadoNME = 1;
//        this.cliente = new Cliente();
//        this.usuario= new Usuario();
        this.alterarCliente();       
    }
   public void setupEdit(){
       this.estadoNME = 2;
   }
   public void alterarCliente(){
        RequestContext context = RequestContext.getCurrentInstance();
        switch(estadoNME){
            case 1 :
                    try {
                        this.usuario.setPassword(this.getPassClienteEQ());
                        this.guardarCliente();
                        
                        //context.execute("wgv_newEditCategoria.hide()");
                        ManejadorMensajes.showMessageInfo("Cliente registrado Exitosamente.");
                        //this.setListaCategorias(this.obtenerCategorias(null));
                    } catch (Exception ex) {
                        Logger.getLogger(GestionClientesBean.class.getName()).log(Level.SEVERE, null, ex);
                    }
                break;
           
             default:
                throw new AssertionError();
        }
        //this.setCategoria(null);
    }
    public void redirect(String url) throws IOException {
        //FacesContext.getCurrentInstance().getExternalContext().redirect(url);
        ExternalContext ectx = FacesContext.getCurrentInstance().getExternalContext();                
             ectx.redirect(ectx.getRequestContextPath()+url);
    }
}
